1. Technical Field of the Invention
This invention relates to displaying and processing data sets. More particularly, it relates to paging and processing large data sets.
2. Background Art
Referring to FIG. 1, in order to display and process large dynamic sets of data based on a users selection in a Lotus Notes web environment, in a known system a single call 88 is made to a host system 80 to retrieve from database 82 all required data. This is done through ODBC (Open DataBase Connectivity). These calls 88 are expensive because they originate at a user browser 90, are transmitted through Internet cloud 86, and pass through a firewall 84 to access the host database 82.
Referring to FIG. 2, each set 58 of data contains line item information 53, 54. If a user selects that line item (via HTML checkbox 51, 52) then all data 55, 56 pertaining to that line item needs to be accessed when processing the page. The problem is two fold: sets 58 are dynamic and can be large, containing hundreds of line items.
Referring to FIG. 3, in order to process such large amounts of data on the Notes Platform 60, HTML 62, Notes hidden fields 66, a Notes CGI variable 64 and LotusScript 92 have been used. A LotusScript agent 92 loads a document 96 containing HTML 62 and Notes hidden fields 66. HTML and Notes fields 62, 66 are populated by processing queries to an external source (in this case it uses ODBC 88 to connect to DB2 82).
Referring to FIG. 4, HTML 62 contains three tables 104, 106, 108 with multiple line items for each table. Each line item contains a checkbox 51, 52, 57 and each checkbox is given a unique value 110, 112, 114 starting at 1 and incrementing by 1 for each line item within a table. All line item detail 72 is stored in Notes multi-valued fields 66 which are hidden on the page 96. As is represented by line 67, these fields 66 are assigned dynamic arrays 68. To handle large sets of data, the following is done when assigning the dynamic arrays 68 (xxxDynArray) to the Notes fields 66 (xxxDetail) in a document 96 (request):    (1) Set xxxItem=request.ReplaceItemValue (“xxxDetail”, xxxDynArray( ))and to prevent a Notes limitation on the page summary size when saving the request document:    (2) xxxItem.IsSummary=False
When a user selects a line item by clicking a checkbox 51, 52, the name/value pair 74 for that checkbox is stored in a Notes CGI variable Request_Content 64.
Referring to FIG. 5, Request_Content 64 is a text string 102 holding HTML form data in name/value pairs, ex: “checkBoxName1=val1&checkBoxName2=val2& . . . . ” In FIG. 5, the layout and relationship of the main data holders are illustrated, including CGI variable 64 and arrays 104, 106 and 108. CGI variable 64 gets broken into two arrays: parameter names 104 and parameter values 106. If parameter names contains “Chkbx” for a given index ‘i’, then the value of the parameter values for index ‘i’ contains the index ‘j’ for the records information in the detail array 108.
Referring to FIG. 6 in connection with FIG. 5, when a user is finished selecting line items at display 94 of user browser 90, he will click the submit button 120 and a LotusScript agent 122 will run to process the document 96.
First, Request_Content 64 is exploded into a variant type array 102 containing name/value pairs, ex: first index of the array contains “checkBoxName1=val1”, second index of the array contains “checkBoxName2=val2” etc. . . . . Next, the name and values are separated into parameter name array 104 and parameter value array 106. Next, each parameter name 70 is processed in a loop 124. If the value 70 of the parameter name 104 for the loop index (not shown) contains “checkBoxName” (as is the case with rows 1 and 4), all the appropriate line item values 72 (for rows 1 and 4) are retrieved from detail arrays (Notes hidden fields) 66. For example, say paramName[i]70=“CheckBoxName” that means the user selected that checkbox and name process 124 retrieves the line item detail 72 by using the unique value paramValue[i] 71 (for name row 1, that value is 1, for name row 4, that value is 3) as the index to the hidden fields 108 for that checkbox 70.
In this system, only checkboxes 51, 52 that are checked by the user will be stored in the Request_Content variable 64. The associated values 106 of the checkboxes are all the indices 112 that need to be accessed in the Notes hidden variables 108.
Referring further to FIG. 5, the invoice amounts that the user has entered have to be matched to the checkboxes that have been checked. This is accomplished by keeping track of the previous value when looping through the parameter names arrays. If the previous value is a CHKBX and the current value is AMT, it knows to retrieve the value from the parameter values array that has the same index.
Processing occurs in a loop 124 and therefore is dynamic based on the data set 58 size, which can be large in itself.
One use of this application allows dealers to create remittances from the web. A remittance is the stub for paying invoices. A remittance can consist of three types of data, Schedule Payment Plan Invoices, Pay As Sold Invoices and Suspense Credits. Each type of set 58 contains its own data 55, 56, with a dynamic number of line items 110. Using the method described above allows for the creation of large Remittances via the web on an existing Notes Platform.
Currently a single call 88 is made to the host system 80 to retrieve all required data from database 82. This is done through ODBC (Open DataBase Connectivity). These calls are expensive as they are through Internet 86 and firewall 84 to access host database 82. It is needed in the art to provide an application which does not impact the host system 80 to make calls to retrieve the data required for a single page 96.